草庐IT

MySQL IF THEN 在 WHERE 子句中

全部标签

mysql - 使用嵌套子查询(sum)更新以获得对更新子句的限制

将这段SQL作为更新脚本,我尝试添加一个工作轮来解决无法将要更新的表作为语句中的子句包含在内的问题,因此使用子查询,但很难做到这一点工作。本质上,我需要用表2中某个字段的总和来更新表1中的值,但仅当其他两个字段在几个表中匹配并且基于field6时,限制才应用于更新子句。UPDATEtable1WSETField1=(SELECTfield2FROM(SELECTA.id,B.field3,SUM(A.field2)ASfield2FROMtable2A,table3B,table4PWHEREA.id=B.idANDP.field6=B.field6)B)WHEREW.field6=B

mySql IN 子句

任何人都知道为什么这行不通:SELECTclients_idFROMclientsWHERE34IN(clients_groups)我将客户端组ID作为34、35、42等存储在文本列“clients_groups”中。当clients_groups中只有一个值时,该语句可以正常工作,否则返回“未找到”。 最佳答案 你想要FIND_IN_SET:SELECTclients_idFROMclientsWHEREFIND_IN_SET('34',clients_groups)我还建议您考虑规范化您的数据库。您可以使用单独的表来存储客户和组

mysql - 将 WHERE 子句添加到 JOIN 语句

我有2个表,employees和holidays。在查看为今年输入的假期后,我正在尝试选择一个员工列表、他们允许的假期和剩余假期。表格看起来像这样(只显示重要的行)employeesid,name,allowed_holidayholidayid,employee,num_days,date_to我的当前查询发现这些值很好,但我想添加一个WHERE子句,以便仅在date_to>xxxx-09-01ANDSELECTe.id,e.name,e.allowed_holiday,(e.allowed_holiday-SUM(h.num_days))ASremainingFROMemploye

mysql - 通过 IN 子句对 MySQL 查询结果进行排序

我有一个像这样的mysqlSELECT*FROMtableWHEREidIN(3245,76,3466,998,12984,4466,931,50,728)有什么方法可以让查询结果按照IN子句中id的顺序排序吗?非常感谢更新:i'vejustfoundthisquestioncoveredhere尽管如此,我的IN子句确实包含多达5000个ID,那么使用“FIELD”会是最好的解决方案吗? 最佳答案 如果您不介意重复ID序列,使用ORDERBYFIELD应该可以解决问题:SELECT*FROMtableWHEREidIN(3245,

mysql - 在三个不同的列上使用 MAX、WHERE 和 GROUP BY 提高 SQL 查询的速度

我正在尝试加快在约2000万行的表上完成大约需要60秒的查询。对于这个例子,表格有三列(id、dateAdded、name)。id是主键。我添加到表中的索引是:(dateAdded)(name)(id,name)(id,name,dateAdded)我尝试运行的查询是:SELECTMAX(id)asid,nameFROMexampletableWHEREdateAdded日期因查询而异。这样做的目的是在添加日期或之前获取每个名称的最新条目。当我在查询中使用explain时,它告诉我它正在使用(id,name,dateAdded)索引。+----+-------------+------

mysql - 在同一 SELECT 子句中使用列别名

是否可以在分配给它的同一个SELECT子句中使用列别名?例如:SELECTord_id,candy_id,price,quantity,price*quantityASext_cost,ext_cost*@tax_rate返回错误,因为MySQL无法识别ext_cost*@tax_rate查询中的“ext_cost”。如果不可能,是否可以返回一个表,其中包含第一个查询中列出的所有内容,而不必编写这样的内容?SELECTord_id,candy_id,price,quantity,price*quantityASext_cost,(price*quantity)*@tax_rate基本上

php - 仅对选定值之一应用 where 子句

假设我有如下表格:idquantity152336我想检索id=2的行的数量,以及该表的总数量,我想我可以这样做:sql="selectquantitywhereid='2'sum(quantity)astotal_quantityfromtable";现在,我知道这个说法是错误的,但我希望你能明白我在这里想做什么。我怎样才能实现这样的目标? 最佳答案 使用条件聚合:selectsum(casewhenid=2thenquantityend)asqty2,sum(quantity)astotal_quantityfromt;

php - 为什么使用 "AND"运算符与 JOIN 一起工作,即使没有 "WHERE"子句

下午好,我刚刚注意到一件事。如果我编写一个带有JOIN的mysql查询,例如:SelectCar,VendorfromCarsJOINVendorOnVendor.IdCar=Car.IdCarWHERECar="Brand"它将返回等于“Brand”的汽车。但我注意到,如果我以这种方式构建查询:SelectCar,VendorfromCarsJOINVendorOnVendor.IdCar=Car.IdCarANDCar="Brand"它将返回与先前查询相同的内容。请注意,我使用AND而不是WHERE。我还在PHP查询中测试了它是否有效。例如:SelectCar,Vendorfrom

mysql - Laravel 查询生成器 where and or where

我想构建一个类似这样的查询:select*fromuserswhereid=1ANDaddress="USA"AND(status="active"ORstatus="pending")我如何使用Laravel查询构建器来做到这一点?请帮忙。谢谢! 最佳答案 尝试使用Laravel查询生成器查找复杂的查询示例。也许这会有所帮助:DB::table('users')->where('id',1)->where('address','USA')->where(function($query){$query->where('status'

sql - MySQL - Where IN 与 GROUP_CONCAT 一起

IN()中使用的查询返回:1,2。然而,整个查询返回0行,这是不可能的,因为它们存在。我在这里做错了什么?SELECTDISTINCTli.auto_idFROMlinksASliJOINgroup_dataASgiONli.auto_id=gi.autoidANDli.user_id=gi.useridWHEREgi.groupidIN(SELECTCAST(GROUP_CONCAT(gf.groupid)ASCHAR)FROMgroup_followersASgfWHEREgf.userid_ext='1'GROUPBYgf.userid_ext)ANDli.keywordLIKE